import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
 * Es la clase Puntaje donde se mostrara el puntaje del juego 
 * 
 * @author (Carlos Andrés Olea Reyes) 
 */
public class Puntaje extends ScrollActor
{
   private int valor;
   private int W1ptos,W2ptos,W3ptos;
   private int vptos;  
   private boolean bandmundo;
   protected boolean setLevel;
   private GreenfootImage mundo2= new GreenfootImage("mundo2.png");
   private GreenfootImage mundo3= new GreenfootImage("nubes.jpg");
   private int altura;
   /**
    *El constructor de la clase donde tiene a valor el cual mostrara el puntaje del juego
    *y la variable set level para checar el nivel
    */
   public Puntaje()
   {
   vptos=0;    
   valor=0;
   W1ptos=500;
   W2ptos=1000;
   W3ptos=1500;
   setLevel=true;
   bandmundo=true;
   }
   /**
     *muestra el valor de puntaje del jugador del juego en tiempo real
     */
    public void act() 
    {
        // Add your action code here.
        setImage(new GreenfootImage(""+valor,20,Color.BLACK,null));
    }    
   
    /**
     * este metodo hace que se incremente el valor dependiendo el tipo de anillo que se haya
     * encontrado y se cerciorara de poner los otros mundos
     */
   public boolean incrementa(int An)
   {
    World mundo=(World) getWorld();
    boolean World3; 
    switch(An){
       case 1:
       valor+=20;
       
       break;
       case 2:
       valor+=45; 
       
       break;
       case 3:
       valor+=70; 
            
       break;
       case 4:
       valor+=100; 
          
       break;
        }
    setImage(new GreenfootImage("" + valor, 20, Color.BLACK, null));   
        
    if(valor>=W1ptos)
    {
        if(bandmundo==true){
       
         ScrollWorld m=(ScrollWorld) getWorld();  
         Altura altura1=m.getAltura1();
         int altura=altura1.getvalAlt();
         altura=6600;
         altura1.regvalALt(altura);
         m.setNewBackground(mundo2);
         World1 mundo1=(World1) getWorld();
         mundo1.level_2();
         bandmundo=false;
         
        }
        
    }
    
    if(valor>=W2ptos)
    {
        if(setLevel==true)
        { 
         ScrollWorld m=(ScrollWorld) getWorld();  
         Altura altura1=m.getAltura1();
         Paracaidista jug=((World1)m).getJugador();
         int altura=altura1.getvalAlt();
         altura=6600;
         altura1.regvalALt(altura);
         World3=jug.getBanMun();
         m.setNewBackground(mundo3);
         World1 mundo1=(World1) getWorld();
         mundo1.level3();
         setLevel=false;
         World3=true;
         jug.regBanW3(World3);
        }        
    }
    if(valor>=W3ptos)
    {
         ScrollWorld m=(ScrollWorld) getWorld();  
         Paracaidista jug=((World1)m).getJugador();
         vptos=valor;
         actualizaPuntos();    
         setImage(new GreenfootImage("¡¡¡¡GANASTE!!!",20,Color.BLACK,null));
         Greenfoot.delay(100);
         Greenfoot.setWorld(new menu());
         World1 mundoaux;
         mundoaux=(World1)super.getWorld();
         mundoaux.detenSonido();
    }
    
    return bandmundo;
    
   }
    
    
    
   
   
   /**
    * este metodo dependiendo del tipo de enemigo que se haya encontrado y tocado el jugador
    * hara que se resten cierta cantidad de puntos 
    */
   public void decrementa(int obs)
   {
   World mundo=(World) getWorld();
     switch(obs){
       case 1://ave
       valor-=70;
      
       break;
       case 2://roca
       valor-=35; 
        
       break;
       case 3://nube
       valor-=30; 
        
       break;
       case 4://Rayo
       valor-=15; 
        
       break;
       case 5://globo
       valor-=10;
        
       break;
       case 6://dardo
       valor-=5;
        
       break;
    }
    setImage(new GreenfootImage("" + valor, 20, Color.WHITE, Color.BLACK));   
    if(valor<0)
    {
      ScrollWorld m=(ScrollWorld) getWorld();  
      PuntajeV vidas=m.getPuntaje2();
      Altura altura1=m.getAltura1();
      altura=altura1.getvalAlt();
      altura=6600;
      altura1.regvalALt(altura);
      vidas.decrementa(vptos);
      valor=0;
      m.setCameraLocation(300,200); 
    }
   }
   
   
      /**
    * Este metodo actualiza los puntos que el jugador a ido acumulando durante el juego
    */
    public void actualizaPuntos()
    {
     
    if(UserInfo.isStorageAvailable())
    {
       
        UserInfo info=UserInfo.getMyInfo();
        if(vptos>info.getScore())
        {
            info.setScore(vptos);
        }
        info.store();
        
    }
    }
    public int getvptos()
    {
    return vptos;
    }
    
} 


